
#include <bcm2835.h>
#include <stdio.h>
#include <signal.h>
#include "gpio.h"
#include "gpio.c"
#include <sys/types.h>
#include <unistd.h>


#define pin	RPI_GPIO_P1_16 //GPIO23

void buzzer_on (int sig);
void buzzer_off (int sig);
int buzzer_flag=0;

int GPIO_SPK(void);
int main(int argc, char* argv[])
{
   
       printf("buzzer PID=%d\n",getpid());

        signal(SIGUSR1,buzzer_on);
        signal(SIGUSR2,buzzer_off);
	
	if (!bcm2835_init())
	    return 1;

	bcm2835_gpio_fsel(pin,BCM2835_GPIO_FSEL_OUTP);
	bcm2835_gpio_write(pin,LOW);
	
#if 0
      if(atoi(argv[1]) == 1) {

	GPIO_SPK(999);

       } else {
        GPIO_OUTPUT_L(pin);
	

      }

#else
     while(1) {
        pause();
	GPIO_SPK();
     }

   
#endif
    return 0;
}

void buzzer_on(int sig)
{

   buzzer_flag=1;


}

void buzzer_off(int sig)
{

   buzzer_flag=0;

}


int GPIO_SPK()
{
        GPIO_SET_OUTPUT(pin);
     
       while(1)
        {

           if (buzzer_flag==1) {
                GPIO_OUTPUT_H(pin);
                bcm2835_delay(200);
                GPIO_OUTPUT_L(pin);
                bcm2835_delay(200);
           } else {

                GPIO_OUTPUT_L(pin);
                break;

           }
                
        }
        
}


